/**
 * 日志接口定义
 * 作者：GodMainCode
 * 创建时间：2024-01-17
 * 修改时间：2024-01-17
 * 修改人：GodMainCode
 */

// 日志类型枚举
export enum LogType {
  OPERATION = 1,  // 操作日志
  LOGIN = 2,      // 登录日志
  ERROR = 3,      // 错误日志
}

// 日志级别枚举
export enum LogLevel {
  DEBUG = 'debug',
  INFO = 'info',
  WARN = 'warn',
  ERROR = 'error',
}

// 基础日志接口
export interface ILog {
  id: number;
  type: LogType;         // 日志类型
  level: LogLevel;       // 日志级别
  user_id?: number;      // 操作用户ID
  username?: string;     // 操作用户名
  ip: string;           // 操作IP
  method: string;       // 请求方法
  path: string;         // 请求路径
  params?: string;      // 请求参数
  result?: string;      // 操作结果
  error?: string;       // 错误信息
  duration: number;     // 执行时长(ms)
  user_agent?: string;  // 用户代理
  created_at: Date;     // 创建时间
}

// 操作日志接口
export interface IOperationLog extends ILog {
  module: string;       // 操作模块
  action: string;       // 操作动作
  description: string;  // 操作描述
}

// 登录日志接口
export interface ILoginLog extends ILog {
  status: number;       // 登录状态：0-失败 1-成功
  msg?: string;        // 登录消息
}

// 错误日志接口
export interface IErrorLog extends ILog {
  name: string;        // 错误名称
  message: string;     // 错误消息
  stack?: string;      // 错误堆栈
}

// 日志查询接口
export interface ILogQuery {
  type?: LogType;      // 日志类型
  level?: LogLevel;    // 日志级别
  username?: string;   // 用户名
  ip?: string;         // IP地址
  startTime?: Date;    // 开始时间
  endTime?: Date;      // 结束时间
  page?: number;       // 页码
  pageSize?: number;   // 每页条数
} 